Week OverviewMon – Fri · 10 hours total

Automation, version control, storage and process/service management — condensed into one week

This is the busiest week of the course. It combines what used to be two separate weeks — Bash scripting with Git, and storage with process/service management — into a single, tightly-paced week, so the course now finishes in seven weeks instead of eight. Every topic from both source weeks is still taught; the guided lab time for each has been trimmed to its most essential, representative exercises, and a handful of secondary/optional exercises have been moved to take-home practice (flagged in each day's lesson plan). Students write real Bash scripts, put them under Git version control, then shift into system administration — attaching and partitioning storage, and controlling processes and services with systemd. By Friday every student has a GitHub repository with committed and merged work, a persistent custom disk mount, and a systemd service they wrote themselves.

Week at a glance

Monday
Scripting: Variables, Conditionals, Loops & Functions

shebang, variables, read, if/elif/else, for/while, functions — the complete core of Bash scripting in one day

Tuesday
Error Handling, Debugging & Git

set -euo pipefail, guard clauses, bash -x/-n, then git init/add/commit/branch/merge, GitHub push

Wednesday
Storage: Mounts, fstab & Disk Management

reading fstab and UUIDs, then fdisk, mkfs, partprobe — add a virtual disk and persist it

Thursday
Processes & systemd

top, ps, signals, background jobs, then systemctl, journalctl, and a custom service unit

Friday
Mini-Assessment 5

Written: scripting, git, storage, processes, systemd. Practical: script+Git, disk, process+service tasks.

⭐ OverTheWire BanditStanding challenge — not assessed

Week 5 target: Levels 15–22

This week's target range is wider than usual (it absorbs both former Week 5 and Week 6 ranges) since it's self-paced stretch work, not graded. Level 15 uses SSL/TLS with openssl s_client. Level 16 scans ports with nmap. Level 17 compares files with diff. Level 18 runs a command non-interactively over SSH — echoing this week's scripting work. Level 19 introduces setuid binaries, connecting to Week 2's SUID content. Levels 20–22 involve a listening service, reading cron jobs in /etc/cron.d, and understanding a cron script — reinforcing Week 4 cron and this week's service content.

Learning OutcomesBy end of Week 5, students can…
Write Bash scriptsVariables, conditionals, loops, and functions — accepting user input and command-line arguments
Script defensivelyUse set -euo pipefail, guard clauses, and bash -x/-n to write and debug reliable scripts
Use Git and GitHubInit, stage, commit, branch, merge, and push a repository; collaborate on a shared repo
Mount and persist storageRead /etc/fstab, partition and format a disk with fdisk/mkfs, and mount it permanently via UUID
Inspect and control processesUse top and ps, manage background jobs, and send SIGTERM/SIGKILL correctly
Manage services with systemdUse systemctl and journalctl, and write a working custom service unit file
MondayLecture + Lab 5A · 2 hrs

Bash scripting fundamentals — variables, conditionals, loops, and functions in one day

0:00–0:10
Recap
0:10–0:45
Lecture
0:45–1:50
Lab 5A
1:50–2:00
Debrief
Instructor note: This day used to be two separate days (variables/conditionals, then loops/functions). Watch the clock closely on the lecture — if it runs past 45 minutes, cut the functions section shorter and let disk_report.sh's reference table do more of the teaching.
TuesdayLecture + Lab 5B · 2 hrs

Error handling and debugging, then Git and GitHub

0:00–0:10
Recap
0:10–0:40
Lecture
0:40–1:50
Lab 5B
1:50–2:00
Debrief
Time is tight today: this is the most compressed day of the week. If a student is still debugging buggy.sh past the 20-minute mark, have them move on to the Git section and return to the fix afterward — the Git workflow is the harder skill to recover if time runs out.
WednesdayLecture + Lab 5C · 2 hrs

Storage — reading fstab, then partitioning, formatting, and mounting a disk permanently

0:00–0:10
Recap
0:10–0:45
Lecture
0:45–1:50
Lab 5C
1:50–2:00
Debrief
fdisk is destructive: as always, confirm with students that they are working on /dev/sdb (the new disk), never /dev/sda (the OS disk), before running any fdisk command.
ThursdayLecture + Lab 5D · 2 hrs

Processes — inspection and signals, then systemd services

0:00–0:10
Recap
0:10–0:45
Lecture
0:45–1:45
Lab 5D
1:45–1:55
Bonus
1:55–2:00
Wrap
The service-unit moment: students writing and enabling their own systemd service — the same skill the Friday practical will test — is the payoff of the week. Make sure every student reaches this before 1:45.
FridayMini-Assessment 5 · 2 hrs

Mini-Assessment 5 — Scripting, Git & System Administration

0:00–0:25
Written
0:25–1:50
Practical
1:50–2:00
Review
TopicWeightFormat
Scripting logic (variables, conditionals, loops, functions)10%Written
Git concepts5%Written
fstab / UUID / storage theory5%Written
Processes and systemd theory10%Written
Script + Git workflow task25%Practical
Storage task (partition, format, mount, fstab)25%Practical
Process + custom systemd service task20%Practical

What you need ready before Monday

Lab 5A–5D handouts printed git installed on VMs (apt install git) Instructor GitHub repo prepared for Tuesday's collaboration task 5GB VHDX pre-created if possible for Wednesday Mini-Assessment 5 printed (Friday)
← Week 4 Day 1 Lesson Plan → Week 6 → Course Outline